Sun, Spring, Solaris, Sunsoft, SunOS, Java and HotJava are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the United States of America and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.
The present invention relates generally to distributed object-oriented programming, and more specifically to interoperability of distributed objects between network clients and network servers.
In the present disclosure the term xe2x80x9cnetwork serverxe2x80x9d refers to an apparatus on a network that includes software objects, and the term xe2x80x9cnetwork clientxe2x80x9d refers to an apparatus on a network that refers to software objects. The term xe2x80x9cnetwork server machinexe2x80x9d refers to a host computer that includes a network server, and the term xe2x80x9cnetwork client machinexe2x80x9d refers to a host computer that includes a network client. The term xe2x80x9cdocument serverxe2x80x9d refers to an apparatus that provides downloadable documents, and the term xe2x80x9ccode serverxe2x80x9d refers to an apparatus that provides downloadable code.
The CORBA
The interoperability of software objects between object-oriented clients and servers has become a significant issue in distributed computing systems. Typically, since different (object-oriented) client/servers have different object interfaces, objects produced by one client/server cannot be used by another client/server. One present effort for standardizing an interface for objects within (object-oriented) client/servers is known as Common Object Request Broker Architecture (CORBA).
The CORBA specification generally provides interfaces by which a client/server can access software objects from another client/server and also provide access to its own software objects to other client/servers. To enable the accessing of such xe2x80x9cdistributed objectsxe2x80x9d, CORBA specifies an xe2x80x9cInterface Definition Languagexe2x80x9d (IDL) to be used by the client/server, more particularly to be used by object request brokers (ORBs) within each client/server. Exemplary client/servers incorporating IDL include SunOS(trademark) and NEO(trademark) from Sun Microsystems, Inc. and DCE and ORBIX from Digital Equipment Corporation.
Further information regarding CORBA can be found in the following references: xe2x80x9cThe Common Object Request Broker: Architecture and Specificationxe2x80x9d, Release 2.0, Published by Object Management Group (OMG), Framingham, Mass. July 1995. xe2x80x9cThe ESSENTIAL CORBA: System Integration Using Distributed Objectsxe2x80x9d Thomas J. Mowbray, PhD and Ron Zahavi. Published by John Wiley and Object Management Group. 1995.
Although IDL has provided a standardized way of defining object interfaces, CORBA did not specify an xe2x80x9con-the-wire-protocolxe2x80x9d for the access of objects across a network. As a result, different vendors have implemented ORBs using different network protocols and different data formats for handling such network objects.
The Java(trademark) Language
With the increasing popularity of the Internet and the World-Wide Web, interoperability of software between completely different computers and operating systems has become an issue. One problem with obtaining software from the Internet is that when a user receives a document from a document server, the user should also obtain an operating system specific driver for the document. With conventional network hypertext mark-up language (HTML) browsers, for example, xe2x80x9chelper applicationsxe2x80x9d should be provided, such as movie viewers, sound players, etc. in order to xe2x80x9cusexe2x80x9d the document. A solution that was developed to overcome this problem is the Java language, developed by Sun Microsystems, Inc.
The Java language is an object-oriented language that can be integrated into conventional HTML browsers and allows a document server to provide the browser with documents as well as executable code. The executable code is automatically loaded from the document server if the HTML browser determines that it does not have the appropriate driver already resident on the user machine. The executable code takes the form of application programs, xe2x80x9cappletsxe2x80x9d, comprising xe2x80x9cbytecodesxe2x80x9d that are machine independent. These applets are then interpreted by operating system specific applet interpreters (virtual machines). A current Internet/Web browser implementation using the Java language is HotJava(trademark), also developed by Sun Microsystems, Inc.
Further information regarding the Java Language and the HotJava browser can be found in the following references: xe2x80x9cThe Java/HotJava Programmer""s Guidexe2x80x9d currently posted at the following Internet site: http://java.sun.com/proGuide/index.html, and xe2x80x9cThe Java Language Specificationxe2x80x9d Release 1.0 Alpha3, May 11, 1995 attached as Appendix A.
The present invention provides methods and apparatus for allowing application programs to invoke objects within network servers that have different network (on-the-wire) protocols. In particular, the present invention allows document servers to down-load ORBs and network protocols to application programs, thus enabling application programs to invoke objects within network servers.
According to a preferred embodiment, a method for enabling an application program to communicate with a network server, includes the steps of downloading a document from a document server to the application program, downloading code from a code server associated with the document server to the application program, the code including a network protocol handler for the network server, and using the network protocol handler to communicate with the network server.
According to another preferred embodiment, a distributed computing system including a network server also includes a document server for storing a plurality of documents, a code server for storing a plurality of code associated with the plurality of documents, the plurality of code including a network protocol handler, and an application program for loading a document from the plurality of documents, for loading code from the plurality of code associated with the document, and for using the network protocol handler within the code to communicate with the network server.
The present invention also provides methods and apparatus for enabling application programs to receive communications from network clients that have different network (on-the-wire) protocols. In particular, the present invention allows document servers to down-load ORBs and network protocols to application programs, thus enabling network clients to invoke objects in application programs.
According to another preferred embodiment, a method for enabling an application program to receive communications from a network client includes the steps of downloading a document from a document server to the application program, downloading code from a code server associated with the document server to the application program, the code including a network protocol handler for the network client, and using the network protocol handler to receive communications from the network client.
According to yet another preferred embodiment a distributed computing system including a network client also includes a document server for storing a plurality of documents, a code server for storing a plurality of code associated with the plurality of documents, the plurality of code including a network protocol handler, and an application program for loading a document from the plurality of documents, for loading code from the plurality of code associated with the document, and for using the network protocol handler within the code to receive communications from the network client.